package com.atguigu.jsp;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @版本： V5.1.0
 * @版权： Copyright @ 2025 广东广昱信息科技有限公司版权所有
 * @作者： 广东广昱信息科技有限公司
 * @日期： 2025-07-04 16:39
 */
@Controller
@RequestMapping("/jsp")
public class JspController {

    /**
     * TODO: 快速查找视图
     *  1.方法的返回值是字符串类型
     *  2.不能添加@ResponseBody,直接返回给字符串给浏览器，不找视图，不走视图解析器
     *  3.返回值 对应中间的视图名称即可
     * @return
     */
    @GetMapping("index")
    public String index(HttpServletRequest request){
        request.setAttribute("data","hello jsp!!!");
        System.out.println("JspController.index");
        return "index";
    }

    /**
     * 转发：只能是项目下的资源
     *  1.方法的返回值写成二字符串
     *  2.不能添加responseBody注解
     *  3.返回的字符串前 forward:/转发地址
     *
     * @return
     */
    @GetMapping("forward")
    public String forward(){
        System.out.println("JspController.forward");
        return "forward:/jsp/index.jsp";
    }

    /**
     * 重定向：
     *  1.方法返回值写成字符串类型
     *  2。不能添加responseBody注解
     *  3.返回字符串前面redirect: /重定向的地址
     * @return
     */
    /**
     * 路径细节：【不使用springmvc request response】
     *   1.重定向不能访问项目外的资源转发是项目下的资源跳转。路径：项目下的地址   /jsp/index  忽略 applicationContext
     *   2.重定向项目下的资源可以是项目外的地址 重定向属于二次请求 路径：   项目下的地址
     * 使用springmvc路径语法：
     *  “forward：路径|redirect:路径”重定向，资源的地址也不需要写项目的根路径！
     *  转发和重定向的地址都一样！   /springmvc/index-> /springmvc/springmvc/jsp/index
     *
     * @return
     */

    @GetMapping("redirect")
    public String redirect(){
        System.out.println("JspController.redirect");
        return "redirect:/jsp/index";
    }


    @GetMapping("redirect/baidu")
    public String redirectBaidu(){
        System.out.println("JspController.redirect");
        return "redirect:http://www.baidu.com";
    }

}
